0%

kubernetes 安装---基础环境准备

kubernetes 安装—基础环境准备

前提条件

Ubuntu Linux 或者 CentOS

环境初始化

设置仓库源

CentOS 系统在/etc/yum.repos.d/目录下,使用下面命令设置仓库源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 可选的,更换基础源为阿里云源,注意备份同名的镜像源文件
# Centos 7 使用下面命令更换阿里云源
curl -o CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# Centos 8 使用下面命令更新阿里云源
curl -o CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

curl -o docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all
yum makecache
yum repolist

Ubuntu 系统使用下面命令设置仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"

curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF

apt-get update

系统配置

  1. 关闭交换空间(如果有)

    1
    2
    swapoff -a
    sed -ri "s/.*.swap.*/#&/" /etc/fstab
  2. 禁用 SELinux(如果有)

    1
    2
    setenforce 0
    sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  3. 关闭防火墙(如果有)

    1
    2
    systemctl stop firewalld
    systemctl disable firewalld
  4. 设置内核参数

    1
    2
    3
    4
    5
    echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.d/k8s.conf
    echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.d/k8s.conf
    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.d/k8s.conf
    modprobe br_netfilter
    sysctl -p /etc/sysctl.d/k8s.conf
  5. 设置 hostname (单机可选,多节点需要设置防止冲突)

    1
    hostnamectl set-hostname master

    ubuntu-server 18.04 在执行上述命令之前需要执行 sed -i "s|preserve_hostname: false|preserve_hostname: true|g" /etc/cloud/cloud.cfg 防止重启 hostname 失效。桌面版本不用设置

安装 Docker

kubernetes github 上的 CHANGELOG 记录了 kubernetes 对 Docker 版本的要求,建议选好对应的 kubernetes 版本再安装 Docker。例如如果希望安装 Kubernetes 1.15,那么查看 CHANGELOG-1.15.md,可以查看到 Kuberentes 1.15 对 Docker 的最低版本要求是 1.13.1。

CentOS 安装

1
2
yum install -y docker-ce # 安装最新版
yum install -y docker-ce-18.06.3.ce-3.el7 # 安装 18.06.3 版本

使用 yum list all docker-ce --showduplicates | sort -r 查看可安装的版本

Ubuntu 安装

1
2
apt-get install -y docker-ce # 安装最新版
apt-get install -y docker-ce=5:18.09.7~3-0~ubuntu-bionic # 安装指定版本

使用 apt-cache madison docker-ce 查看可安装的版本

Docker 设置

1
2
3
echo '{"insecure-registries": ["0.0.0.0/0"]}' >> /etc/docker/daemon.json
systemctl enable docker
systemctl restart docker

安装 kubeadm

CentOS 安装

1
2
yum install -y kubeadm # 安装最新的 kubeadm
yum install -y kubeadm-1.14.1-0 # 安装 kubeadm 1.14.1

使用 yum list all kubeadm --showduplicates | sort -r 查看可安装的版本

Ubuntu 安装

1
2
apt-get install -y kubeadm # 安装最新的 kubeadm
apt-get install -y kubeadm=1.14.1-00 # 安装 kubeadm 1.14.1

使用 apt-cache madison kubeadm 查看可安装的版本

配置 kubelet

1
2
3
4
5
# kubelet 使用的 cgroup 要和 Docker 的 cgroup 一致
sed -i '0,/"$/s/"$/ --cgroup-driver=cgroupfs"/' /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload
systemctl enable kubelet
systemctl start kubelet

初始化 Kubernetes 设置(可选)

使用 kubeadm config images list 查看初始化所需要的镜像,当前版本为 1.14.1,需要的镜像有

1
2
3
4
5
6
7
8
9
k8s.gcr.io/kube-apiserver:v1.14.1
k8s.gcr.io/kube-controller-manager:v1.14.1
k8s.gcr.io/kube-scheduler:v1.14.1
k8s.gcr.io/kube-proxy:v1.14.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
# kubernetes-dashboard 镜像,使用的 dashboard ui 不同版本也不同
k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

编写脚本从阿里云拉取镜像再 tag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#! /bin/bash
images=( # 这里的镜像列表是 kubeadm config images list 查看的列表去掉 k8s.gcr.io/ 得到的
kube-apiserver:v1.14.1
kube-controller-manager:v1.14.1
kube-scheduler:v1.14.1
kube-proxy:v1.14.1
pause:3.1
etcd:3.3.10
coredns:1.3.1
kubernetes-dashboard-amd64:v1.10.1
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
done